Virtual DJ - The ultimate mp3 mix DJ software - Skin SDK

The BMP file

The .bmp file contains all the graphics needed in your skin.
You can use any bitmap editor (from Paint to Photoshop) to modify or create it.
The bitmap will usually have a width of 1024, and a height of more than 768.
In the first 768 rows you'll find the background used for your skin.
The next rows are used to store additional graphics, like pushed or selected buttons.

The XML file

The .xml file describes each element of your skin.
For each element, it defines what it should be used for, where are the graphics used for its various states (in coordinates from the .bmp file), and various other things.
The xml file can be edited from a simple text editor (like notepad), but it's more likely that you will install a specific xml editor (by the way, by default, Windows will open a .xml file in internet explorer where you can read it but can't modify it).

The xml file is composed of a root element (Skin), which contains all the elements of your skin.
There are 10 different types of elements:

The Actions

Here is the list of the valid actions:

The Values

Here is the list of the valid value:

The <button> element

The syntax of the button element is <button action="" chan="" value="" rightclick="" dblclick="" leftclick="" pannel="">.

Then, as child elements of the <button> element, you find its definitions.
The available definitions of a button are:

Except for size and pos, all the other definitions are optional

The <slider> element

The syntax of the slider element is <slider action="" chan="" value="" dblclick="" rightclick="" leftclick="" pannel="" orientation="" direction="" relative="">.
The properties values are:

And its definitions are:

The <browser> element

The browser element sets the space that will be used to draw the windows (search, files, ...).
You can only have one browser element in a given skin file, but you do have to define one.

The syntax of the browser element is <browser>.

The browser definitions are:

The <rhythm> element

The rhythm element defines where and how the rhythm curves will be displayed.

The syntax of the rhythm element is <rhythm>.

The rhythm definitions are:

The <songpos> element

The songpos is a special slider that is used to display and set the song position, display the song's structure, display and set the first five cue points.

It has all the properties and definitions of a <slider>, plus those:

The <scratch> element

A scratch zone defines a zone where the user can scratch using the mouse.

The syntax of the scratch element is <scratch chan="" factor="">.
The properties values are:

The scratch definitions are:

The <textzone> element

The syntax of the textzone element is <textzone chan="" resetcounter="" pannel="">.
The properties values are:

The textzone definitions are: The format is a string that describes how the text will be displayed.
It can contain a few embedded commands: Some of the % commands can be used with modifiers. Modifiers are capitalized letters you insert between the % and the command. You can use:

The <visual> element

A visual is a zone that changes its display to reflect various things.

The syntax of the visual element is <visual source="" factor="" type="" chan="" pannel="" orientation="" direction="">.
The properties values are:

The visual definitions are:

The <dropzone> element

A dropzone is a zone where a file could be dragged over in order to load it.

The syntax of the dropzone element is <dropzone chan="" pannel="">.
The properties values are:

The dropzone definitions are:

The <grabzone> element

A grabzone define a zone that can be used to move the VirtualDJ's window if it is not maximized.
If no grabzone is defined, any zone that is not a defined element act as a grabzone.

The syntax of the grabzone element is <grabzone>.
The grabzone definitions are:

The <pannel> element

A pannel is a zone that group together several other elements, in order to hide or show all of them at once.
Pannels are very usefull if you want to put several groups of elements on the same place, and switch from one group to another with a button or a shortcut.

The syntax of the pannel element is <pannel visible="" id="" group="">.
The properties values are:

The pannel definitions are: